package agenda;

import excecoes.EmailInvalido;
import excecoes.FormaDeContatoInvalida;
import java.io.Serializable;

public class Email extends FormaDeContato implements Serializable {

	private static final long serialVersionUID = 1L;

	/**
	 * Cria uma forma de contato do tipo E-mail
	 * @param endereco  O endereco de e-mail do contato
	 * @throws EmailInvalido Lanca excecao de EmailInvalido caso o endereco de e-mail seja invalido
	 */

	public Email(String endereco) throws FormaDeContatoInvalida {
		super("E-mail", endereco, null);
	}

	/**
	 * Cria uma forma de contato do tipo E-mail
	 * @param endereco O endereco de e-mail do contato
	 * @param comentario Um comentario sobre o e-mail
	 * @throws Exception Lanca excecao de EmailInvalido caso o endereco de e-mail seja invalido
	 */

	public Email(String endereco, String comentario) throws FormaDeContatoInvalida {
		super("E-mail", endereco, comentario);
	}


	/**
	 * @throws EmailInvalido Lanca excecao de EmailInvalido caso o endereco de e-mail seja invalido
	 */

	@Override
	public void validaEndereco(String endereco) throws EmailInvalido {

    	int elementos = 0;

    	for (int i = 0; i < endereco.length(); i++) {

    		char c = endereco.charAt(i);

    		if(c == '@') {
    			elementos = 1;
    		} else if (elementos == 1 && c == '.') {
    			elementos = 2;
    		} else if (elementos >= 1 && !Character.isLetter(c) && c != '.')
    			throw new EmailInvalido("E-mail invalido.");
    	}

    	if (elementos != 2 ) {
    		throw new EmailInvalido("E-mail invalido.");
    	}
	}

}
